<?php
class N_DB_Factory
{
	/**
	 * 数据库驱动工厂类
	 *
	 * @param string $type
	 * @return N_DB_Driver_Interface
	 */
	static public function factory($type = 'Mysql')
	{
		if (empty($type))
		{
			$type = N::getIni('DB_TYPE');
			if (empty($type))
			{
				throw new Exception('请指定数据库类型.');
			}
		}
		
		//Todo:改进数据库类型判断,可以使用array数组映射实现
		$type = ucfirst($type);
		//如果是采用工厂类则自己实现所有类,有两种选择,一种是PDO派生,一种是用派生
		$className = 'N_DB_Driver_'.$type;
		try
		{
			N::loadClass($className);
		}
		catch (Exception $e)
		{
			throw new Exception('找不到指定的数据库驱动类:'.$className);
		}
		return N::getSingleton($className);
	}
}